// 引入vuex
import { createStore } from 'vuex';

// 引入持久化
import createPersistedState from 'vuex-persistedstate';

const store = createStore({
    // 定义数据
    state: {
        /**
         * 顶级菜单下标
         */
        menuKey: null,
        /**
         * 子菜单key
         */
        childrenKey: null,
        /**
         * 用户信息
         */
        userInfo: null,
        /**
         * 顶级菜单id
         */
        menuId:null,
        /**
         * 子菜单路由
         */
        childrenRouter:null
    },
    //同步方法
    mutations: {
        // 添加已登录账号
        addLoggedInAccount(state, { accountId, accountInfo }) {
            state.loggedInAccounts[accountId] = accountInfo;
        },
        updateMenuKey(state, payload) {
            state.menuKey = payload;
        },
        updateChildrenKey(state, payload) {
            state.childrenKey = payload;
        },
        updateUserInfo(state, payload) {
            state.userInfo = payload;
        },
        updateMenuId(state, payload) {
            state.menuId = payload;
        },
        updateChildrenRouter(state, payload) {
            state.childrenRouter = payload;
        },
    },
    //异步方法
    actions: {
        addLoggedInAccountSaync({ commit }, { accountId, accountInfo }) {
            commit('addLoggedInAccount', { accountId, accountInfo });
        },
        updateMenuKeySaync(context, payload) {
            //同步方法	  内容
            context.commit('updateMenuKey', payload);
        },
        updateChildrenKeySaync(context, payload) {
            //同步方法	  内容
            context.commit('updateChildrenKey', payload);
        },
        updateUserInfoSaync(context, payload) {
            //同步方法	  内容
            context.commit('updateUserInfo', payload);
        },
        updateMenuIdSaync(context, payload) {
            //同步方法	  内容
            context.commit('updateMenuId', payload);
        },
        updateChildrenRouterSaync(context, payload) {
            //同步方法	  内容
            context.commit('updateChildrenRouter', payload);
        },
    },
    //计算属性
    getters: {},
    //模块
    modules: {},
    //持久化数据
    plugins: [

        createPersistedState({
            key: 'vuex', // 存储是的名字
            // 也可以是sessionstorage
            storage: window.localStorage
        })
    ]
})

// 抛出
export default store;